package com.ruoyi.produce.base.offer.service;

import com.ruoyi.produce.base.offer.domain.*;

import java.util.List;

/**
 * 生产报价
 * 业务层
 */
public interface IProduceOfferService {
    /**
     * 根据搜索条件查询所有生产报价信息
     * @param cond 搜索条件
     * @return
     */
    List<ProduceOfferDto> selectProduceOfferList(ProduceOfferCond cond);

    /**
     * 按编号查询具体的生产报价信息
     * @param produceOfferId
     * @return
     */
    ProduceOfferDto selectProduceOfferById(String produceOfferId);

    /**
     * 新增生产报价记录
     * @param produceOffer
     * @return
     */
    int insertProduceOffer(ProduceOfferDomain produceOffer);

    /**
     * 修改生产报价记录
     * @param produceOffer
     * @return
     */
    int updateProduceOffer(ProduceOfferDomain produceOffer);

    /**
     * 删除生产报价记录
     * 仅修改删除标志
     * @param produceOffer
     * @return
     */
    int updateProduceOfferDeleteFlag(ProduceOfferDomain produceOffer);

    /**
     * 生产报价详细查询
     * @param cond
     * @return
     */
    List<ProduceOfferListDto> selectProduceOfferListList(ProduceOfferCond cond);

    /**
     * 查询生产报价对应的所有报价详细
     * @param produceOfferId 生产报价编号
     * @return
     */
    List<ProduceOfferListDto> selectProduceOfferListListById(String produceOfferId);

    /**
     * 查询生产报价对应的指定报价详细
     * @param produceOfferId 生产报价编号
     * @param costItemId 成本项目编号
     * @return
     */
    ProduceOfferListDto selectProduceOfferListById(String produceOfferId, Integer costItemId);

    /**
     * 根据生产计划编号查询是否有报价记录
     * @param planSelfId
     * @return
     */
    boolean selectProduceOfferByPlanSelfId(String planSelfId);
}
